# coding: utf-8

# tensorflow是一种图计算框架，所有的计算操作被声明为图（graph）中的节点（Node）
# 即使只是声明一个变量或者常量，也并不执行实际的操作，而是向图中增加节点
# tensor是一个高阶张量，二阶张量为矩阵，一阶张量为向量，0阶张量为一个数（标量）。

import tensorflow as tf

print(tf.__version__)

a = tf.constant(0)
b = tf.constant(1)

print(a)

a = tf.constant(0)
b = tf.constant(1)

print(a)
print(b)

c = tf.add(a, b)

d = a + b
e = a * b

print(d)
print(e)


mat_a = tf.constant([[1, 1, 1], [3, 3, 3]])
mat_b = tf.constant([[2, 2, 2],[5, 5, 5]], name='mat_b')

mul_a_b = mat_a * mat_b
tf_mul_a_b = tf.multiply(mat_a, mat_b)
tf_matmul_a_b = tf.matmul(mat_a, tf.transpose(mat_b), name='matmul_with_name')

print(mul_a_b)
print(tf_mul_a_b)
print(tf_matmul_a_b)

this_graph = tf.get_default_graph()
this_graph_def = this_graph.as_graph_def()
# print(this_graph_def)

sess = tf.Session()
mul_value, tf_mul_value, tf_matmul_value = sess.run([mul_a_b, tf_mul_a_b, tf_matmul_a_b])

print(mul_value)
print(tf_mul_value)
print(tf_matmul_value)